home *** CD-ROM | disk | FTP | other *** search
/ Speccy ClassiX 1998 / Speccy ClassiX 98.iso / amiga_system / the_aminet / dev / gcc / ixemulsrc.lha / ixemul-41.4 / libsrc / __panic.c next >
C/C++ Source or Header  |  1995-05-21  |  3KB  |  91 lines

  1. /*
  2.  * This once was req.c by Markus Wandel. It doesn't look too much like the
  3.  * original version though... Well, it was PD, I used it, so here is his
  4.  * original disclaimer:
  5.  *
  6.  * req.c - by Markus Wandel - 1990
  7.  * Placed in the public domain 7 Oct 1990
  8.  * Please have the courtesy to give credit if you use this code
  9.  * in any program.
  10.  *
  11.  */
  12. #include <exec/types.h>
  13. #include <intuition/intuition.h>
  14.  
  15. #define BASE_EXT_DECL
  16. #define BASE_EXT_DECL0
  17. #define BASE_PAR_DECL struct IntuitionBase *IntuitionBase,
  18. #define BASE_PAR_DECL0 struct IntuitionBase *IntuitionBase
  19. #include <inline/intuition.h>
  20. #define BASE_PAR_DECL
  21. #define BASE_PAR_DECL0 void
  22. #define BASE_NAME *(void **)4
  23.  
  24. static __inline void 
  25. CopyMem (BASE_PAR_DECL APTR source,APTR dest,unsigned long size)
  26. {
  27.   register struct ExecBase *a6 __asm("a6") = BASE_NAME;
  28.   register APTR a0 __asm("a0") = source;
  29.   register APTR a1 __asm("a1") = dest;
  30.   register unsigned long d0 __asm("d0") = size;
  31.   __asm __volatile ("jsr a6@(-0x270)"
  32.   : /* no output */
  33.   : "r" (a6), "r" (a0), "r" (a1), "r" (d0)
  34.   : "a0","a1","d0","d1", "memory");
  35. }
  36. static __inline void 
  37. CloseLibrary (BASE_PAR_DECL struct Library *library)
  38. {
  39.   register struct ExecBase *a6 __asm("a6") = BASE_NAME;
  40.   register struct Library *a1 __asm("a1") = library;
  41.   __asm __volatile ("jsr a6@(-0x19e)"
  42.   : /* no output */
  43.   : "r" (a6), "r" (a1)
  44.   : "a0","a1","d0","d1", "memory");
  45. }
  46. static __inline struct Library *
  47. OpenLibrary (BASE_PAR_DECL UBYTE *libName,unsigned long version)
  48. {
  49.   register struct Library * _res  __asm("d0");
  50.   register struct ExecBase *a6 __asm("a6") = BASE_NAME;
  51.   register UBYTE *a1 __asm("a1") = libName;
  52.   register unsigned long d0 __asm("d0") = version;
  53.   __asm __volatile ("jsr a6@(-0x228)"
  54.   : "=r" (_res)
  55.   : "r" (a6), "r" (a1), "r" (d0)
  56.   : "a0","a1","d0","d1", "memory");
  57.   return _res;
  58. }
  59.  
  60. int
  61. __request_msg (const char *msg, const char *button)
  62. {
  63.   struct IntuiText line, righttext;
  64.   struct IntuitionBase *IntuitionBase;
  65.   int result;
  66.  
  67.   /* we (re)open intuition, because that way we don't depend on arp.library
  68.    * being available for us to open intuibase */
  69.  
  70.   if (IntuitionBase = (struct IntuitionBase *)OpenLibrary("intuition.library",0))
  71.     {
  72.       line.FrontPen = AUTOFRONTPEN;
  73.       line.BackPen = AUTOBACKPEN;
  74.       line.DrawMode = AUTODRAWMODE;
  75.       line.ITextFont = AUTOITEXTFONT;
  76.       line.NextText = 0;
  77.       CopyMem(&line, &righttext, sizeof(line));
  78.       righttext.LeftEdge = AUTOLEFTEDGE;
  79.       righttext.TopEdge = AUTOTOPEDGE;
  80.       line.LeftEdge = 15;
  81.       line.TopEdge = 5;
  82.  
  83.       line.IText = (UBYTE *) msg;
  84.       righttext.IText = (UBYTE *) button;
  85.       result = AutoRequest(IntuitionBase,0L,&line,0L,&righttext,0L,0L,320L,72L);
  86.       CloseLibrary(IntuitionBase);
  87.       return result;
  88.    }
  89.  return -1;
  90. }
  91.